package templatemethod.source;

/**
 * 模板方法：
 * 定义一个操作中的算法的骨架，而将一些步骤延迟到子类中。
 * 模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的特定步骤
 * 说人话就是提供了一个代码复用平台，通过把不变行为搬移到超类，去除子类中的重复代码
 *
 *
 *
 * @author Chen Guang
 * @date 2019/4/8 0008 下午 16:23
 */
public abstract class AbstractTemplate {
    /**
     * 定义抽象方法，由子类去实现
     */
    public abstract void primitiveOperation1();
    public abstract void primitiveOperation2();

    /**
     * 模板方法，给出了逻辑骨架，
     * 而逻辑的组成是一些相应的抽象操作，都推迟到子类实现
     */
    public void templateMethod(){
        primitiveOperation1();
        primitiveOperation2();
        System.out.println("设计模式---模板方法");
    }
}
